#include"personne.h"

Personne::Personne(const std::string& nom,
                     const std::string& prenom,
                     const std::string& adressePostale,
                     const std::string& adresseElectronique)
                     : nom_(nom),
                      prenom_(prenom),
                      adressePostale_(adressePostale),
                      adresseElectronique_(adresseElectronique)
{
}

Personne::Personne(const Personne &pers)
{
    nom_ = pers.nom_;
    prenom_ = pers.prenom_;
    adressePostale_ = pers.adressePostale_;
    adresseElectronique_ = pers.adresseElectronique_;

    qnom = QString(nom_.c_str());
    qprenom = QString(prenom_.c_str());
    qadrp = QString(adressePostale_.c_str());
    qadre = QString(adresseElectronique_.c_str());
}

Personne::~Personne()
{
}

void Personne::initPersonneSystem()
{
    qRegisterMetaTypeStreamOperators<Personne>("Personne");

    qMetaTypeId<Personne>();
}

QDataStream & operator << (QDataStream & out, const Personne & Valeur)
{
    out << Valeur.getNom()
    << Valeur.getPrenom()
    << Valeur.getAdrPost()
    <<Valeur.getAdrEl();

    return out;
}

QDataStream & operator >> (QDataStream & in, Personne & Valeur)
{
    in >> Valeur.qnom;
    in >> Valeur.qprenom;
    in >> Valeur.qadrp;
    in >> Valeur.qadre;

    return in;
}

std::string Personne::getNom() const
{
	return nom_;
}

std::string Personne::getPrenom() const
{
	return prenom_;
}

std::string Personne::getAdrPost() const
{
	return adressePostale_;
}

std::string Personne:: getAdrEl() const
{
	return adresseElectronique_;
}

void Personne::setNom(const std::string& nom)
{
	nom_ = nom;
}

void Personne::setPrenom(const std::string &prenom)
{
    prenom_ = prenom;
}

void Personne::setAdrPost(const std::string& adrPostale)
{
	adressePostale_ = adrPostale;
}

void Personne::setAdrEl(const std::string& adrElect)
{
	adresseElectronique_ = adrElect;
}

std::ostream& operator<<(std::ostream& os,const Personne& p)
{
	os << "Cette Personne se nomme :\n\t" << (p.getNom()) << " " << (p.getPrenom()) << "\n\tAdresse Postale : " << (p.getAdrPost()) << "\n\tAdresse Electronique : " << (p.getAdrEl()) <<std::endl;
	
	return os;
}
